package config

import (
	"sync/atomic"
)

type AppConfigMgr struct {
	config atomic.Value
}

var appConfigMgr = &AppConfigMgr{}

func (a *AppConfigMgr) Callback(conf *Config) {
	appConfigMgr.config.Store(conf)
}

func GetConfig() *Config {
	return appConfigMgr.config.Load().(*Config)
}

func InitConfig(fielname string) (conf *Config, err error) {
	conf, err = NewConfig(fielname)
	if err != nil {
		return
	}
	conf.AddObserver(appConfigMgr)
	appConfigMgr.config.Store(conf)
	return
}
